import { Graph } from '@antv/x6';
import { history } from '../hooks/useHistory';

export function registerEvents(graph) {
  // 节点双击事件
  graph.on('node:dblclick', ({ node }) => {
    console.log('Node double clicked:', node);
    // 这里可以添加节点双击时的处理逻辑
  });

  // 边双击事件
  graph.on('edge:dblclick', ({ edge }) => {
    console.log('Edge double clicked:', edge);
    // 这里可以添加边双击时的处理逻辑
  });

  // 空白区域点击事件
  graph.on('blank:clicked', () => {
    console.log('Blank area clicked');
    // 这里可以添加空白区域点击时的处理逻辑
  });

  // 节点移动事件
  graph.on('node:moved', ({ node }) => {
    console.log('Node moved:', node);
    // 这里可以添加节点移动时的处理逻辑
  });

  // 节点大小改变事件
  graph.on('node:resized', ({ node }) => {
    console.log('Node resized:', node);
    // 这里可以添加节点大小改变时的处理逻辑
  });

  // 连接事件
  graph.on('edge:connected', ({ edge }) => {
    console.log('Edge connected:', edge);
    // 这里可以添加连接建立时的处理逻辑
  });

  // 断开连接事件
  graph.on('edge:disconnected', ({ edge }) => {
    console.log('Edge disconnected:', edge);
    // 这里可以添加连接断开时的处理逻辑
  });

  // 选择变化事件
  graph.on('selection:changed', ({ selected, added, removed }) => {
    console.log('Selection changed:', { selected, added, removed });
    // 这里可以添加选择变化时的处理逻辑
  });

  // 缩放事件
  graph.on('scale', ({ sx, sy, ox, oy }) => {
    console.log('Graph scaled:', { sx, sy, ox, oy });
    // 这里可以添加缩放时的处理逻辑
  });

  // 平移事件
  graph.on('translate', ({ tx, ty }) => {
    console.log('Graph translated:', { tx, ty });
    // 这里可以添加平移时的处理逻辑
  });

  // 右键菜单事件
  graph.on('node:contextmenu', ({ e, node }) => {
    e.preventDefault();
    console.log('Node context menu:', node);
    // 这里可以添加右键菜单的处理逻辑
  });

  graph.on('edge:contextmenu', ({ e, edge }) => {
    e.preventDefault();
    console.log('Edge context menu:', edge);
    // 这里可以添加右键菜单的处理逻辑
  });

  graph.on('blank:contextmenu', ({ e }) => {
    e.preventDefault();
    console.log('Blank context menu');
    // 这里可以添加右键菜单的处理逻辑
  });

  // 拖拽事件
  graph.on('node:dragstart', ({ node }) => {
    console.log('Node drag start:', node);
    // 这里可以添加拖拽开始时的处理逻辑
  });

  graph.on('node:drag', ({ node }) => {
    console.log('Node dragging:', node);
    // 这里可以添加拖拽过程中的处理逻辑
  });

  graph.on('node:dragend', ({ node }) => {
    console.log('Node drag end:', node);
    // 这里可以添加拖拽结束时的处理逻辑
  });

  // 键盘事件
  graph.on('keydown', ({ e }) => {
    console.log('Key down:', e.key);
    // 这里可以添加键盘事件的处理逻辑
  });

  // 鼠标事件
  graph.on('mouseenter', ({ e, cell }) => {
    console.log('Mouse enter:', cell);
    // 这里可以添加鼠标进入时的处理逻辑
  });

  graph.on('mouseleave', ({ e, cell }) => {
    console.log('Mouse leave:', cell);
    // 这里可以添加鼠标离开时的处理逻辑
  });

  // 工具提示事件
  graph.on('cell:mouseenter', ({ cell }) => {
    console.log('Cell mouse enter:', cell);
    // 这里可以添加工具提示的处理逻辑
  });

  graph.on('cell:mouseleave', ({ cell }) => {
    console.log('Cell mouse leave:', cell);
    // 这里可以添加工具提示的处理逻辑
  });
} 